package com.itbaizhan.myshiro.controller;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.Subject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/*Shiro提供了完整的企业级会话管理功能，不依赖于Web容器，
不管JavaSE还是JavaEE环境都可以使用*/
@Controller
public class SessionController {
    //用shiro提供的会话对象
    //登录后访问：localhost:80/user/session
    @RequestMapping("/user/session")
    @ResponseBody
    public void session(){
        //获取subject
        Subject subject = SecurityUtils.getSubject();
        //获取会话
        Session session = subject.getSession();

        //会话id
        System.out.println("会话id"+session.getId());
        // 会话的主机地址
        System.out.println("会话的主机地址"+session.getHost());
        // 设置会话过期时间  单位毫秒  这里是10秒内不操作要重新登录
        session.setTimeout(1000*10);
        // 获取会话过期时间
        System.out.println("获取会话过期时间"+session.getTimeout());
        // 会话开始时间
        System.out.println("会话开始时间"+session.getStartTimestamp());
        //会话最后访问时间
        System.out.println("会话最后访问时间"+session.getLastAccessTime());
        // 会话设置数据
        session.setAttribute("name","百战");
    }
    //访问了上面的网址再访问这网址
    @RequestMapping("/user/getSession")
    @ResponseBody
    public void getsession(){
        Subject subject = SecurityUtils.getSubject();
        Session session = subject.getSession();
        System.out.println(session.getAttribute("name"));
    }
}
